chore: Add GPL exception for Vendure plugins #3280
Merged
+33
−30
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Because Vendure uses the GPL v3.0 license, the common interpretation based on GNU FAQ (single combined program) would suggest that any plugins must also be GPL licensed.
However, it is our opinion that plugins should not be subject to this restriction. In our opinion, the GPL requirements should apply to the Vendure code itself (i.e., the files in this repo). Plugin code is not typically distributed as a combined program - it is distributed as a stand-alone package that only consumes the public APIs of Vendure.
Background
A good general background on the topic of linking & derived works as applied to the GPL can be found here: GNU General Public License: Linking and derived works. In short: there is controversy and lack of clarity on what constitutes a "derived work" and therefore whether programs which make use of GPL libraries must themselves be licensed under the GPL.
To resolve this lack of clarity, many projects make explicit exceptions to the GPL terms, which make clear how the library may be used.
There are many examples of GPL projects/licenses which include special exceptions.
This stackexchange answer gives a good summary of the intent of the classpath exception:
which in turn features a reply from one of the creators of this license, Anthony Green
Here is another article from Vaultinum, a firm specializing in digital IP: The GPL and its Unique GPL Classpath Exception: what does it mean?
The above quotes about the classpath exception express well the intent behind this PR.
GPL v3.0 section 7
Since the specific "classpath exception" license is specific to GPL v2.0, and we are using GPL v3.0, we will not use that exact license. Instead, we will use a mechanism explicitly built in to GPL v3.0 in section 7 "Additional Terms":
A discussion of the intent behind section 7 can be found in the FSF archive article Opinion on Additional Terms
An example of section 7 being used to allow non-GPL plugins is the Roundcube license
This PR applies the same principle to our license.
Our Implementation
This PR builds on the examples set by other projects by using GPL v3.0 section 7 in this way:
The text in the
plugin-exception.txt
file is based on the pattern of the GCC Runtime Library Exception, defining the distinction between "Vendure Core" and "Plugins", and then granting additional permissions on "Plugins".The PR also includes updates to the plugin FAQ and documentation to bring them into line with this new exception.
This change will explicitly allow people to license Vendure plugins under any license they choose, both open source and proprietary.